#include "WindowEvent.h"
#include "Window.h"
#include "Component.h"

using namespace WONAPI;

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
void InputEvent::Deliver()
{
	mWindow->HandleInputEvent(this);
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
ComponentEvent::ComponentEvent(Component *theComponent, int theType) : 
	mComponent(theComponent), mComponentRef(theComponent), mType(theType) 
{ 
	mBroadcast = false;		
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
void ComponentEvent::SetComponent(Component *theComponent)
{
	mComponent = theComponent;
	mComponentRef = theComponent;
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
int ComponentEvent::GetControlId()
{
	return mComponent->GetControlId();
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
void ComponentEvent::Deliver()
{
	if(mBroadcast)
		mWindow->GetWindowManager()->BroadcastEvent(this);
	else
		mComponent->DeliverComponentEvent(this); 
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
void MouseEvent::Deliver()
{
	mWindow->HandleMouseEvent(this);
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
void KeyEvent::Deliver()
{
	mWindow->HandleKeyEvent(this);
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
void DoPopupEvent::Deliver()
{
	mWindow->DoPopup(mParams);
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
EndDialogEvent::EndDialogEvent(int theResult, Window *theWindow, Component *theComponent) :
  mResult(theResult), mWindowRef(theWindow), mComponent(theComponent) 
{
	mWindow = theWindow; 
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
EndDialogEvent::~EndDialogEvent()
{
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
void EndDialogEvent::Deliver()
{
	mWindow->EndDialog(mResult,mComponent);
}
